#ifndef __ATA_H__
#define __ATA_H__

#include <asm/type.h>

struct ATADevice
{
    u8_t reserved;      // 0 (Empty) or 1 (This Drive really exists).
    u8_t channel;       // 0 (Primary Channel) or 1 (Secondary Channel).
    u8_t drive;         // 0 (Master Drive) or 1 (Slave Drive).
    u16_t type;         // 0: ATA, 1:ATAPI.
    u16_t signature;    // Drive Signature
    u16_t capabilities; // Features.
    u32_t commandsets;  // Command Sets Supported.
    u32_t size;         // Size in Sectors.
    u8_t model[41];     // Model in string.
};

struct IDEChannelRegisters
{
    u16_t base;  // I/O Base.
    u16_t ctrl;  // Control Base
    u16_t bmide; // Bus Master IDE
    u8_t nien;   // nIEN (No Interrupt);
};


#endif